package cn.lingyangwl.agile.pay.constant;

import cn.lingyangwl.framework.tool.core.exception.BizException;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;

/**
 * @author shenguangyang
 */
@Getter
@AllArgsConstructor
public enum PayWayCodeEnum {
    // 特殊支付方式, ( 通过二维码跳转到收银台完成支付， 已集成获取用户ID的实现。  )
    QR_CASHIER("QR_CASHIER", "QR_CASHIER"),
    ALI_BAR("ALI_BAR", "支付宝条码支付"),
    ALI_JSAPI("ALI_JSAPI", "支付宝服务窗支付"),
    ALI_LITE("ALI_LITE", "支付宝小程序支付"),
    ALI_APP("ALI_APP", "支付宝 app支付"),
    ALI_PC("ALI_PC", "支付宝电脑网站支付"),
    ALI_WAP("ALI_WAP", "支付宝 wap支付"),
    ALI_QR("ALI_QR", "支付宝 二维码付款"),

    YSF_BAR("YSF_BAR", "云闪付条码支付"),
    YSF_JSAPI("YSF_JSAPI", "云闪付服务窗支付"),

    WX_JSAPI("WX_JSAPI", "微信jsapi支付"),
    WX_LITE("WX_LITE", "微信小程序支付"),
    WX_BAR("WX_BAR", "微信条码支付"),
    WX_APP("WX_APP", "微信手机端支付"),
    WX_H5("WX_H5", "微信H5支付"),
    WX_NATIVE("WX_NATIVE", "微信扫码支付"),

    ;
    private final String code;
    private final String desc;

    public static PayWayCodeEnum ofByCode(String code) {
        return Arrays.stream(PayWayCodeEnum.values())
                .filter(e -> e.getCode().equalsIgnoreCase(code)).findFirst().orElseThrow(() -> new BizException("未知支付方式 {}", code));
    }
}
